#include <stdio.h>
//#include "stos.h"

#define MAX_STOS 60


/* maksymalny rozmiar stosu */
double stos[MAX_STOS];
int sp = 0; /* wskaznik kolejnego wolnego miejsca na stosie */

double zdejmij(void) {
    if (sp > 0)
        return stos[--sp];

    return 0;
}

void wstaw(double element) {
    if (sp < MAX_STOS)
        stos[sp++] = element;
    else
	printf("wstaw: Przepelnienie stosu!\n");
}

void odwrotna_notacja(char *wynik, char *s) {
    char x, y;

    while (x = *s++) {                                     
        if (((x >= '0') && (x <= '9')) || (x == '.')) {   
            /* kopiowanie calej liczby z wejscia na wyjscie */
            do
                *wynik++ = x;
            while (x = *s, (((x >= '0') && (x <= '9')) || (x == '.')) && s++);
            *wynik++ = ' '; //note: declared here


	} else if (x == '(')                               
            wstaw((double)'(');

	else if (x == ')')                                 
            while ((y = (char)zdejmij()) != '(')
                *wynik++ = y, *wynik++ = ' ';

	else {                                             
            while (y = (char)zdejmij(),
                   y && ((y == '^') ||
                         ((y == '*') || (y == '/')) && (x != '^') ||
                         ((y == '+') || (y == '-')) && (x != '*') &&
                                           (x != '/') && (x != '^')))
                *wynik++ = y, *wynik++ = ' ';

            wstaw((double)y);
            wstaw((double)x);
        }
    }

    while (x = (char)zdejmij())                               
        *wynik++ = x, *wynik++ = ' ';

/* zakonczenie lancucha wyjsciowego */
    *wynik = '\0';    
}

int main() {

printf("Podaj ciąg znaków:");

char *a, *b;
odwrotna_notacja(a, b);


return 0;
}
